package com.prd.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Objects;

/**
 * <p>
 * 客户-项目
 * </p>
 *
 * @author o1
 * @since 2023-12-26
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("客户拜访CustomerVisitDTO")
public class CustomerVisitDTO implements Serializable {

    private Long id;

    /**
     * 拜访任务编号
     */
    @ApiModelProperty("拜访任务编号")
    private String visitNo;

    /**
     * 客户编号
     */
    @ApiModelProperty("客户编号")
    private String customerNo;

    /**
     * 客人编号,列表组合成字符串
     */
    @ApiModelProperty("客人编号,列表组合成字符串")
    private String guestNo;

    /**
     * 项目id,列表组合成字符串
     */
    @ApiModelProperty("项目id,列表组合成字符串")
    private String projectId;

    /**
     * 主题
     */
    @ApiModelProperty("主题")
    private String visitTheme;

    /**
     * 拜访预计时间
     */
    @ApiModelProperty("拜访预计时间")
    @JsonFormat( pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date visitDate;

    /**
     * 拜访实际时间
     */
    @ApiModelProperty("拜访实际时间")
    @JsonFormat( pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date visitActualDate;


    /**
     * 拜访完成时间
     */
    @ApiModelProperty("拜访完成时间")
    @JsonFormat( pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date visitFinishDate;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    @JsonFormat( pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date createDate;


    /**
     * 拜访现场人士姓名
     */
    @ApiModelProperty("拜访现场人士姓名")
    private String visitOnSite;

    /**
     * 其他参与拜访人
     */
    @ApiModelProperty("其他参与拜访人")
    private List<CustomerTmpEmployeeDTO> otherBusinessManagerList;

    /**
     * 客户信息
     */
    @ApiModelProperty("客户信息")
    private CustomerDTO customerDTO;

    /**
     * 拜访目的/任务描述
     */
    @ApiModelProperty("拜访目的/任务描述")
    private CustomerRemarkDTO goalRemark;

    /**
     * 结果汇报
     */
    @ApiModelProperty("结果汇报")
    private CustomerRemarkDTO resultRemark;

    /**
     * 拜访补充汇报
     */
    @ApiModelProperty("拜访补充汇报")
    private List<CustomerRemarkDTO> replenishRemarkList;

    /**
     * 客人信息
     */
    @ApiModelProperty("返回-客人信息")
    private List<CustomerGuestDTO> guestDTOList;

    /**
     * 项目信息
     */
    @ApiModelProperty("返回-项目信息")
    private List<CustomerProjectDTO> projectDTOList;


    /**
     * 业务负责人id
     */
    @ApiModelProperty("业务负责人id")
    private Integer businessManagerId;

    /**
     * 业务负责人
     */
    @ApiModelProperty("业务负责人")
    private String businessManager;

    /**
     * 业务部门
     */
    @ApiModelProperty("业务部门")
    private String businessDepartment;

    /**
     * 业务部门id
     */
    @ApiModelProperty("业务部门id")
    private Integer businessDepartmentId;

    /**
     * 业务负责人电话
     */
    @ApiModelProperty("业务负责人电话")
    private String businessPhone;

    /**
     * 业务负责人参与状态，参与1，未参与2
     */
    @ApiModelProperty("业务负责人参与状态，参与1，未参与2")
    private Integer businessIsJoin;

    /**
     * 业务负责人参与状态说明
     */
    @ApiModelProperty("业务负责人参与状态说明")
    private String businessIsJoinRemark;

    /**
     * 状态：待拜访1，进行中2，已取消3，完成4
     */
    @ApiModelProperty("状态：待拜访1，进行中2，已取消3，完成4")
    private Integer status;


    @Override
    public int hashCode() {
        return Objects.hash(visitTheme + visitDate.toString() + guestNo) & Integer.MAX_VALUE;
    }
}
